/*
 * JugadorThread.h
 *
 * Author: Grupo Nro.
 */

#ifndef JUGADORTHREAD_H_
#define JUGADORTHREAD_H_

#include "Thread.h"
#include "BLQueue.h"
#include "Message.h"

class Partida;
class JugadorConectado;

class JugadorThreadRecepcion: public Thread {
public:
	JugadorThreadRecepcion(Mutex * mutex, int socketFD);
	virtual ~JugadorThreadRecepcion();
	void run();
	void enqueueEventMessage(Message m);
	void setPartida(Partida* partida);
	void setJugadorConectado(JugadorConectado* jugadorConectado);
	void closeConnections();
	// Despierta el thread para anunciarle al cliente que los jugadores se conectaron
	void anounce();
	bool solicitarComienzoDePartidaACliente();
private:
	BLQueue<Message> queue;
	Partida* partida;
	JugadorConectado* jugadorConectado;
	int socketFD;
	Mutex mutexForWaitPlayers;
	bool partidaComenzada;
};

#endif /* JUGADORTHREAD_H_ */
